﻿/**
 * Classe permettant de gérer les éléments du menu contextuel de l'extension
 */

var ContextMenu = {};

/**
 * Initialisation du menu contextuel.
 *
 * Ajout les liens suivants:
 * - "Télécharger avec la Freebox"
 * - "Considérer le lien comme un fichier .torrent" si l'option est activée
 */
ContextMenu.init = function()
{
	// Création de l'élément du menu contextuel "télécharger"
	ContextMenu.id = chrome.contextMenus.create({
		"title": "Télécharger avec la Freebox", 
		"contexts":["image","video","audio","link"],
		"onclick": ContextMenu._onclick,
		"documentUrlPatterns": ["http://*/*","https://*/*", "ftp://*/*"]
	});
	
	// Création de l'élément du menu contextuel "exception"
	ContextMenu.createExceptionLink();
};

/**
 * Crée l'élément du menu contextuel pour les "exclusions"
 */
ContextMenu.createExceptionLink = function()
{	
	// On prend l'option dans le storage
	var opt = Storage.get("exceptions-torrent-context-menu");
	// On crée l'élément seulement si l'option existe et vaut "1"
	if (opt && opt == "1")
	{
		ContextMenu.id_exception_link = chrome.contextMenus.create(
		{
		"title": "Considérer le lien comme un fichier .torrent", 
		"contexts":["image","video","audio","link"],
		"onclick": ContextMenu._onclickTorrentExceptions,
		"documentUrlPatterns": ["http://*/*","https://*/*"]
		}
		);
	}
};

/**
 * Evènement au clic sur le menu contextuel "télécharger"
 *
 * @param {Event} e l'objet event envoyé par Chrome
 */
ContextMenu._onclick = function(e)
{
	// Si l'écouteur "onclick" existe, on le lance
	if (typeof(ContextMenu.onclick == "function"))
		ContextMenu.onclick(e);
};

/**
 * Evènement au clic sur le menu contextuel "exclusion"
 */
ContextMenu._onclickTorrentExceptions = function(e)
{
	// Optention du lien
	var link = (typeof(e.linkUrl) != "undefined")? e.linkUrl : e.srcUrl;
	url = link.toString();
	
	// Création d'un nouvel onglet vers les options, avec focus automatique sur l'ajout d'exception
	chrome.tabs.create({url: "options.html?link="+encodeURIComponent(url)});
};

/**
 * Met à jour les éléments du menu contextuel
 */
ContextMenu.update = function()
{
	// Récupération de la valeur de l'option
	var opt = Storage.get("exceptions-torrent-context-menu");
	
	// Si l'élément n'existe pas encore, et que l'option a été changé vers "true", on ajoute l'élément
	if (opt && opt == "1" && !ContextMenu.id_exception_link)
		ContextMenu.createExceptionLink();
	// Si l'élément existe déjà, et que l'option a été changé vers "false", on enlève l'élément
	else if ((!opt || opt == "0") && ContextMenu.id_exception_link)
	{
		chrome.contextMenus.remove(ContextMenu.id_exception_link);
		// Suppression de sa référence
		ContextMenu.id_exception_link = undefined;
	}
};


ContextMenu.init();
